<%+cbi/valueheader%>

<script type="text/javascript">//<![CDATA[
	var freqlist = <%= luci.http.write_json(self.iwinfo.freqlist) %>;
	var hwmodes  = <%= luci.http.write_json(self.iwinfo.hwmodelist or {}) %>;
	var htmodes  = <%= luci.http.write_json(self.iwinfo.htmodelist) %>;
	var acs =  <%= luci.http.write_json(self.hostapd_acs or 0) %>;

	var channels = {
		'11g': [
			'auto', 'auto', true
		],
		'11a': [
			'auto', 'auto', true
		]
	};

	if (acs < 1) {
		channels[(freqlist[freqlist.length - 1].mhz > 2484) ? '11a' : '11g'].length = 0;
	}

	for (var i = 0; i < freqlist.length; i++)
		channels[(freqlist[i].mhz > 2484) ? '11a' : '11g'].push(
			freqlist[i].channel,
			'%d (%d MHz)'.format(freqlist[i].channel, freqlist[i].mhz),
			!freqlist[i].restricted
		);

	var modes = [
		'', 'Legacy', true,
		'n', 'N', hwmodes.n,
		'ac', 'AC', hwmodes.ac,
		'ax', 'AX', hwmodes.ax,
		'be', 'BE', hwmodes.be
	];

	var htmodes = {
		'':   [
			'', '-', true
		],
		'n':  [
			'HT20', '20 MHz', htmodes.HT20,
			'HT40', '40 MHz', htmodes.HT40
		],
		'ac': [
			'VHT20', '20 MHz', htmodes.VHT20,
			'VHT40', '40 MHz', htmodes.VHT40,
			'VHT80', '80 MHz', htmodes.VHT80,
			'VHT160', '160 MHz', htmodes.VHT160
		],
		'ax': [
			'HE20', '20 MHz', htmodes.HE20,
			'HE40', '40 MHz', htmodes.HE40,
			'HE80', '80 MHz', htmodes.HE80,
			'HE160', '160 MHz', htmodes.HE160
		],
		'be': [
			'EHT20', '20 MHz', htmodes.EHT20,
			'EHT40', '40 MHz', htmodes.EHT40,
			'EHT80', '80 MHz', htmodes.EHT80,
			'EHT160', '160 MHz', htmodes.EHT160,
			'EHT320', '320 MHz', htmodes.EHT320
		]
	};

	var bands = {
		'':   [
			'11g', '2.4 GHz', (channels['11g'].length > 3),
			'11a', '5 GHz', (channels['11a'].length > 3)
		],
		'n':  [
			'11g', '2.4 GHz', (channels['11g'].length > 3),
			'11a', '5 GHz', (channels['11a'].length > 3)
		],
		'ac': [
			'11a', '5 GHz', true
		],
		'ax': [
			'11a', '2 GHz', true,
			'11a', '5 GHz', true
		],
		'be': [
			'11a', '2 GHz', true,
			'11a', '5 GHz', true,
			'11a', '6 GHz', true
 		]
	};

	function cbi_set_values(sel, vals)
	{
		if (sel.vals)
			sel.vals.selected = sel.selectedIndex;

		while (sel.options[0])
			sel.remove(0);

		for (var i = 0; vals && i < vals.length; i += 3)
		{
			if (!vals[i+2])
				continue;

			var opt = document.createElement('option');
			    opt.value = vals[i+0];
			    opt.text  = vals[i+1];

			sel.add(opt);
		}

		if (!isNaN(vals.selected))
			sel.selectedIndex = vals.selected;

		sel.parentNode.style.display = (sel.options.length <= 1) ? 'none' : '';
		sel.vals = vals;
	}

	function cbi_toggle_wifi_mode(id)
	{
		cbi_toggle_wifi_htmode(id);
		cbi_toggle_wifi_band(id);
	}

	function cbi_toggle_wifi_htmode(id)
	{
		var mode = document.getElementById(id + '.mode');
		var bwdt = document.getElementById(id + '.htmode');

		cbi_set_values(bwdt, htmodes[mode.value]);
	}

	function cbi_toggle_wifi_band(id)
	{
		var mode = document.getElementById(id + '.mode');
		var band = document.getElementById(id + '.band');

		cbi_set_values(band, bands[mode.value]);
		cbi_toggle_wifi_channel(id);
	}

	function cbi_toggle_wifi_channel(id)
	{
		var band = document.getElementById(id + '.band');
		var chan = document.getElementById(id + '.channel');

		cbi_set_values(chan, channels[band.value]);
	}

	function cbi_init_wifi(id)
	{
		var mode = document.getElementById(id + '.mode');
		var band = document.getElementById(id + '.band');
		var chan = document.getElementById(id + '.channel');
		var bwdt = document.getElementById(id + '.htmode');

		cbi_set_values(mode, modes);

		if (/EHT20|EHT40|EHT80|EHT160|EHT320/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
			mode.value = 'be';
		else if (/HE20|HE40|HE80|HE160/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
			mode.value = 'ax';
		else if (/VHT20|VHT40|VHT80|VHT160/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
			mode.value = 'ac';
		else if (/HT20|HT40/.test(<%= luci.http.write_json(self.map:get(section, "htmode")) %>))
			mode.value = 'n';
		else
			mode.value = '';

		cbi_toggle_wifi_mode(id);

		if (/a/.test(<%= luci.http.write_json(self.map:get(section, "hwmode")) %>))
			band.value = '11a';
		else
			band.value = '11g';

		cbi_toggle_wifi_band(id);

		bwdt.value = <%= luci.http.write_json(self.map:get(section, "htmode")) %>;
		chan.value = <%= luci.http.write_json(self.map:get(section, "channel")) %>;
	}
//]]></script>

<label style="float:left; margin-right:3px">
	<%:Mode%><br />
	<select style="width:auto" id="<%= cbid %>.mode" name="<%= cbid %>.mode" onchange="cbi_toggle_wifi_mode('<%= cbid %>')"></select>
</label>
<label style="float:left; margin-right:3px">
	<%:Band%><br />
	<select style="width:auto" id="<%= cbid %>.band" name="<%= cbid %>.band" onchange="cbi_toggle_wifi_band('<%= cbid %>')"></select>
</label>
<label style="float:left; margin-right:3px">
	<%:Channel%><br />
	<select style="width:auto" id="<%= cbid %>.channel" name="<%= cbid %>.channel"></select>
</label>
<label style="float:left; margin-right:3px">
	<%:Width%><br />
	<select style="width:auto" id="<%= cbid %>.htmode" name="<%= cbid %>.htmode"></select>
</label>
<br style="clear:left" />

<script type="text/javascript">cbi_init_wifi('<%= cbid %>');</script>

<%+cbi/valuefooter%>
